/* USER CODE BEGIN Header */
/**
 ******************************************************************************
 * 文件名称        :  lcd.c
 * 描述            :  基于STM32F407的LCD驱动
 ******************************************************************************
 * @注意事项
 *
 * 版权所有:    版权 (c) 2025  2710614006@qq.com
 * 日期:         2025年2月3日
 *
 *
 *
 *
 *
 *   要在main函数中实现这个函数
 *    uint8_t	SPI1_WriteByte(uint8_t* data, uint16_t size)
{
//	return HAL_SPI_Transmit(&hspi1, data, size, 0xff);
    return HAL_SPI_Transmit(&hspi1, data, size, 0xff);
}



  在main函数中初始化的时候要把cs至0
 LCD_Init();
    HAL_GPIO_WritePin(TFT_CS_GPIO_Port, TFT_CS_Pin, 0);
    HAL_GPIO_WritePin(BACKLIGHT_GPIO_Port, BACKLIGHT_Pin, 1);


 *
 ******************************************************************************
 */
/* USER CODE END Header */

#ifndef __LCD_H
#define __LCD_H

#ifdef __cplusplus
extern "C" {
#endif

/* 包含文件 ------------------------------------------------------------------*/
#include "stm32g4xx_hal.h"

#include "main.h"
#include "math.h"
//#include "arm_const_structs.h"
#include "main.h"
//#include "font.h"
#include "spi.h"
#include "gpio.h"
#include "HzLib.h"
#include "ui.h"


/* 定义 -------------------------------------------------------------------*/
// LCD的宽度和高度定义
#define LCD_Width 			240
#define LCD_Height 			135
#define Width_Offset		40
#define Height_Offset		53
// 画笔颜色
#define WHITE         	 	0xFFFF
#define BLACK         		0x0000
#define BLUE         	 	0x001F
#define BRED             	0XF81F
#define GRED 			 	0XFFE0
#define GBLUE			 	0X07FF
#define RED           	 	0xF800
#define MAGENTA       	 	0xF81F
#define GREEN         	 	0x07E0
#define CYAN          	 	0x7FFF
#define YELLOW        	 	0xFFE0 // 黄色
#define BROWN 			 	0XBC40 // 棕色
#define BRRED 			 	0XFC07 // 棕红色
#define GRAY  			 	0X8430 // 灰色
#define DARKBLUE      	 	0X01CF // 深蓝色
#define LIGHTBLUE      	 	0X7D7C // 浅蓝色
#define GRAYBLUE       	 	0X5458 // 灰蓝色
#define LIGHTGREEN     	 	0X841F // 浅绿色
#define LGRAY 			 	0XC618 // 浅灰色(面板)，窗体背景色
#define LGRAYBLUE        	0XA651 // 浅灰蓝色(中间层颜色)
#define LBBLUE           	0X2B12 // 浅棕蓝色(选择条目的反色)

/*
	LCD_RST:	PB3
	LCD_DC:		PB5
*/

#define	LCD_RST(n)		(n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_RESET))
#define	LCD_DC(n)		(n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET))

/* 私有变量 --------------------------------------------------------*/
extern uint16_t	POINT_COLOR;		// 默认画笔颜色
extern uint16_t	BACK_COLOR;			// 默认背景颜色

/* 私有函数原型 -----------------------------------------------*/
void LCD_Init(void);																					// 初始化

void LCD_Write_HalfWord(const uint16_t da);																// 向LCD写入半字节数据
void LCD_Address_Set(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);								// 设置数据显示区域

void LCD_Clear(uint16_t color);																			// 清屏
void LCD_Fill(uint16_t x_start, uint16_t y_start, uint16_t x_end, uint16_t y_end, uint16_t color);		// 单色填充

void LCD_Draw_Point(uint16_t x, uint16_t y);															// 画点
void LCD_Draw_ColorPoint(uint16_t x, uint16_t y,uint16_t color);										// 用彩色点绘图
void LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);									// 画线
void LCD_DrawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);								// 画矩形
void LCD_Draw_Circle(uint16_t x0, uint16_t y0, uint8_t r);												// 画圆
void LCD_Show_Image(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint8_t *p);			// 显示图片

void LCD_Show_O1(void);		// 开机logo
void LCD_Show_O2(void);
void LCD_Show_O3(void);
void LCD_Show_O4(void);
void LCD_Show_O5(void);
void LCD_Show_O6(void);
void LCD_Show_O7(void);

void LCD_Show_BG(void);
void LCD_Show_Poewr_Num(float Voltage_Real_value);
void LCD_Show_Vol_Num(float Voltage_Real_value);
void LCD_Show_Temperature_Num(float Temp_Real_value1, float Temp_Real_value2);
void LCD_Show_Motor_Mode(uint8_t M0_Mode, uint8_t M1_Mode);
void LCD_Show_Motor_Vel(float M0_Vel, float M1_Vel);
//void LCD_Show_Motor_Cur(float32_t M0_Cur, float32_t M1_Cur);
void LCD_Show_Servo_Angle(uint8_t S0_Angle, uint8_t S1_Angle);

#ifdef __cplusplus
}
#endif

#endif